package com.ponhu.ea2.stockcenter.provider.service.entity;

import com.ponhu.ea2.stockcenter.provider.entity.StockInventoryWarehouseTrace;
import com.baomidou.mybatisplus.extension.service.IService;

import java.util.Collection;
import java.util.List;
import java.util.Map;

/**
 * WMS任务链执行时货品在仓库间变动记录表 服务类
 *
 * @author ${author}
 * @since 2021-10-26
 */
public interface StockInventoryWarehouseTraceService
        extends IService<StockInventoryWarehouseTrace> {

    /**
     * 查询指定业务单号和指定货品的所有链路占用记录集合
     *
     * @param docNo
     * @param inventoryCodes
     * @return
     */
    List<StockInventoryWarehouseTrace> getWarehouseTraces(String docNo, Collection<String> inventoryCodes);

    /**
     * 根据条件查询所有链路占用记录集合
     *
     * @param docNo
     * @param inventoryCodes
     * @param warehouseCode
     * @param inOccupy
     * @param inProgress
     * @return
     */
    List<StockInventoryWarehouseTrace> getWarehouseTraces(String docNo, Collection<String> inventoryCodes,
                                                          String warehouseCode, Boolean inOccupy, Boolean inProgress);

    /**
     * 查询对应货品在指定仓库排除指定业务单号外的全部链路占用库存数【MAP：key-货品编码，value-链路占用库存数】
     *
     * @param docNo
     * @param inventoryCodes
     * @param warehouseCode
     * @return
     */
    Map<String, Integer> getAllTracesOccupyExcludeToMap(String docNo, Collection<String> inventoryCodes, String warehouseCode);

    /**
     * 查询对应货品在指定(所有)仓库的所有业务单号链路占用库存统计数【MAP：key-货品编码，value-链路占用库存统计数】
     *
     * @param inventoryCodes
     * @param warehouseCode
     * @return
     */
    Map<String, Integer> getAllTracesOccupyToMap(List<String> inventoryCodes, String warehouseCode);

    /**
     * 查询对应货品在所有仓库的所有业务单号链路占用库存数【MAP：key-仓库编码，value-链路占用库存数】
     *
     * @param inventoryCode
     * @return
     */
    Map<String, Integer> getWhTracesOccupyToMap(String inventoryCode);

    /**
     * 根号业务单号(链路号)关闭任务链路
     *
     * @param docNo 业务单号(链路号)
     * @return
     */
    Boolean updTraceDone(String docNo);

}
